#include<REGX52.H>
#include "intrins.h"

/**
  * @brief  定时器0初始化
  * @param  无
  * @retval 无
  */
void Timer0_Init(){
	// TMOD设置 配置定时器0的工作模式，同时保留定时器1的配置
	TMOD &= 0xF0; // 保留高位值，定时器1的配置
	TMOD |= 0x01;  // 保留定时器1配置的同时，设置设置定时器0的工作模式为1
	// 设置计数器寄存器初始值 1ms一周期 64536
	TH0=0xFC;  // 高8位设置
	TL0=0x18;  // 低8位设置
	// TCON设置
	TF0 = 0; // 溢出标记初始值，当计数器溢出时，会自动置1
	TR0 = 1; // 打开定时器0
	// 中断设置
	ET0 = 1; // 打开定时器0的中断允许
	EA = 1; // 打开中断总开关
}

void main(){
	Timer0_Init(); // 定时器配置初始化	
	while(1){	
	}
}

// 定义定时器0的中断处理函数
void Timer0_Handle() interrupt 1
{
	static int i=0; // 静态局部函数，计数	
	i++; // cpu运行了1ms
	// 重新为定时器0的计数赋初值
	TH0=0xFC;  // 高8位设置
	TL0=0x18;  // 低8位设置
	// 执行了1秒后，可以点灯了
	if(i>=1000){
		i=0;// 重新计时
		P2_0 = ~P2_0; // 电平取反
	}	
}
